Generally speaking, a router is a device in a packet based computer network that handles connections between two or more networks. Routers determine destinations for packets and thus control the flow of data through networks. A router uses a routing protocol to determine the destination of a given packet. Some routing protocols are interior routing protocols (e.g., Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Enhanced Interior Gateway Routing Protocol (EIGRP), and so on) that operate within a single routing domain. Other routing protocols are exterior routing protocols (e.g., Border Gateway Protocol (BGP), Exterior Gateway Protocol (EGP), Constrained Shortest Path First (CSPF), and so on) that are used to route between separate routing domains.
Some routers use policy based routing. A network administrator can set network policies for the router to follow. For example, a policy based router can be configured to allow, deny, or specially route packets based on the identity of a source or destination, transmission protocols, size of packets, and so on. Some routers that use policy based routing route based on an application associated with packets. These routers attempt to determine the application based on the source or destination port numbers of the packets. However, determining an application in this manner will often be inaccurate because multiple applications can share a port number. For example, many applications run in web browsers and thus use port 80 which is associated with Hyper Text Transfer Protocol (HTTP).